// 88. Merge Sorted Array

// Given two sorted integer arrays nums1 and nums2, merge nums2 into nums1 as one sorted array.

// Note:
// You may assume that nums1 has enough space (size that is greater or equal to m + n) to hold additional elements from nums2. The number of elements initialized in nums1 and nums2 are m and n respectively.
package main

func merge(nums1 []int, m int, nums2 []int, n int) {
	i := m + n - 1
	m--
	n--
	for m >= 0 && n >= 0 {
		if nums1[m] >= nums2[n] {
			nums1[i] = nums1[m]
			m--
		} else {
			nums1[i] = nums2[n]
			n--
		}
		i--
	}

	if n < 0 {
		return
	}

	for ; n >= 0; n-- {
		nums1[i] = nums2[n]
		i--
	}
}

func main() {
	nums1, nums2 := []int{1, 1, 2, 0, 0, 0}, []int{1, 3, 3}

	merge(nums1, 3, nums2, 3)
	for i, v := range nums1 {
		println(i, ":", v)
	}
}
